How to retain hard edges after subsurf modifier (+bevel)

These are the results i got mixing modifiers , any ideas of how to get the smooth shading while keeping the pointy edge

This is the plain mesh

With subdivsurf modifier


Subdivsion with bevel modifer , results in damaged edges


Thanks in advance

The bevel modifier will work for simple objects. For more complex objects, you will need to use supporting edge loops.

There is a specific tool in blender designed to keep specific edges sharp to any desired degree while a subsurf modifier is active, without adding more edge loops. It is called “Crease.”
In edit mode, select the edges you want to stay sharp. Then, press “Shift+E” and simply move your mouse towards or away from the edge to specify how sharp you want it, and left click when you are done. You can also type in any value between 1 and 0, with 0 being no sharpness and 1 being total sharpness.