feature:abstract ported to Java